{{tag>Feisty Gutsy réseau p2p bittorrent}}

----

====== rTorrent ======

**rTorrent** est un client BitTorrent très léger fonctionnant en ligne de commande. Il n'utilise que très peu de ressources (pratique si vous disposez d'une vieille machine).

La seule contrainte de cet outil est qu'on ne peut pas fermer le terminal dans lequel il est lancé sans le stopper. Pour contourner ce problème, on utilisera le programme [[:Screen]] ou dtach.
Il est également possible d'utiliser [[alltray]] afin d'envoyer l'icône du terminal dans la zone de notification.

===== Pré-requis =====

Vous devez activer les [[depots#universe_et_multiverse|dépôts Multiverse]].

===== Installation =====

[[tutoriel:comment_installer_un_paquet|Installez les paquets]] **[[apt://rtorrent|rtorrent]]** et **[[apt://screen|screen]]** (ou **[[apt://dtach|dtach]]**).

===== Configuration =====

Tout d'abord, commencez par créer le fichier de configuration. 

Copier le fichier **/usr/share/doc/rtorrent/examples/rtorrent.rc** dans votre dossier personnel.

<code>cp /usr/share/doc/rtorrent/examples/rtorrent.rc ~/.rtorrent.rc</code>

Puis [[:tutoriel:comment_editer_un_fichier|Éditez le fichier]].

Voici une configuration basique de ce fichier. Pour plus de détails, consultez la [[:man|page de manuel]] de rTorrent.

<file>
# Fichier de configuration de rtorrent.
# Par défaut, c'est le fichier ~/.rtorrent.rc

# Limites des taux de téléchargement en réception et en envoi. "0" équivaut à aucune limite. 
#download_rate = 500
#upload_rate = 150

# Répertoire qui contient les fichiers téléchargés.
directory = ~/torrent/data

# Répertoire où rtorrent stocke l'état de téléchargement des torrents.
session = ~/torrent/session
# Utilisez un chemin //relatif// si vous êtes susceptible de lancer plusieurs
# instances de rtorrent ! Commentez la ligne précédente et décommentez celle-ci :
#session = ./session

# Ports utilisables par rtorrent (utilisez deux fois la même valeur pour utiliser tout le temps ce port)
port_range = 6881-6999
port_random = no

# Vérification des données à la fin du téléchargement
check_hash = yes

# Ce répertoire contient les fichiers .torrent. 
# Dès qu'un nouveau .torrent y est ajouté, le téléchargement commence.
schedule = watch_directory,15,15,load_start=~/torrent/torrent_active/*.torrent

# Dès que le téléchargement est achevé, le fichier est déplacé dans le
# répertoire ~/torrent_finis.
# Pour les versions récentes de rtorrent (0.8.4 et supérieures), utilisez la ligne suivante :
#system.method.set_key = event.download.finished,move_complete,"execute=mv,-u,$d.get_base_path=,~/torrent_finis/;d.set_directory=~/torrent_finis/"
# Pour les versions 0.7.7 de 0.8.3, utilisez la ligne suivante :
#on_finished = move_complete,"execute=mv,-u,$d.get_base_path=,~/torrent_finis/;d.set_directory=~/torrent_finis/"

# Activation de DHT pour les torrents sans trackers.
# Il est obligatoire de définir un répertoire de session (voir plus haut).
dht = auto

# Port UDP pour l'utilisation de DHT. 
dht_port = 6880

# Forcer l'utilisation de transactions chiffrées, pour ne recevoir et n'envoyer que des données protégées.
# En revanche, les identités du l'expéditeur et du destinataire restent visibles.
encryption = allow_incoming,require,require_rc4
</file>
<note tip>Il faut penser à ouvrir les ports utilisés par rtorrent dans [[iptables]].

Note: quels ports ? rtorrent utilise un port pour chaque echange avec les peer</note>

===== Utilisation =====
Pour lancer rtorrent, tapez dans une console :

  rtorrent
<note important>  rtorrent vérifie à chaque démarrage le hash de vos fichiers. Ceci peut être très long et monopoliser des ressources importantes si vous avez un grand nombre de fichiers en seed. Pour éviter cela éditez votre fichier .rtorrent.rc et n'oubliez pas de créer un dossier **torrent** et sous-dossier **session** dans votre home.

  # Default session directory. Make sure you don't run multiple instance
  # of rtorrent using the same session directory. Perhaps using a
  # relative path?
  session = ~/torrent/session

 Ces modifications permettront de conserver vos préférences.
</note>
Vous pouvez ajouter des fichiers *.torrent de deux façons :
  * En pressant, dans rtorrent, la touche backspace, vous pouvez entrer le chemin complet du torrent ou bien une url du torrent.
  * En enregistrant directement le torrent dans le répertoire que vous avez indiqué dans votre fichier de configuration avec la commande watch_directory (dans le fichier de configuration plus haut, il s'agit du répertoire /home/nom_utilisateur/torrent/torrent_active/)

==Les combinaisons de touches==
Pour agir sur un torrent, vous devez le sélectionner (avec les touches haut et bas). Le torrent sélectionné est indiqué par 3 étoiles sur le côté gauche.
  * Pour mettre en pause un torrent, pressez ctrl+d.
  * Pour relancer un torrent en pause, pressez ctrl+s.
  * Pour retirer un torrent, vous devez presser deux fois ctrl+d : il se met en pause la première fois, puis est effacé la deuxième.
  *Pour donner la priorité à un morceau du fichier (ou ne pas le télécharger), appuyez deux fois sur la touche « flèche droite », sélectionnez le fichier qui vous intéresse, puis pressez la touche « Espace ».
  * Pour que le torrent ignore/prenne en compte les commandes du fichier de configuration (telles que move_complete dans l'exemple), pressez I.
  * Pour modifier les taux limites d'envoi et de réception :
    * a / s / d : Augmente le taux en envoi de 1 / 5 / 50 Ko
    * A / S / D : Augmente le taux en réception de 1 / 5 / 50 Ko
    * z / x / c : Diminue le taux en envoi de 1 / 5 / 50 Ko
    * Z / X / C : Diminute le taux en récption de 1 / 5 / 50 Ko
    * pour demander le download d'une peer : ^x puis d.add_peer=xxx.xxx.xxx.xxx:port (^ veut dire Ctrl, remplacer xxx... par l'ip de la peer et port par le numero du port utilisée par la peer)
  * Pour quitter rtorrent, pressez ctrl+q.


==Signification des informations données par rtorrent==
Voici l'exemple d'un torrent :
<code>
*  ubuntu-11.04-install-i386.iso
* Torrent:  161.6 /  617.2 MB Rate:   1.1 /  41.3 KB Uploaded:     5.1 MB [24%]  0d  3:09 [TI R: 0.03]
*
</code>

Voici sa signification :

  ubuntu-11.04-install-i386.iso 
Nom du fichier téléchargé.


  Torrent: 161.6 / 617.2 MB
Nombre de Mo déjà téléchargés / nombre total du torrent.

  Rate: 1.1 / 41.3 KB
Vitesses de téléchargement en envoi et en réception.

  Uploaded: 5.1 MB
Nombre de Mo déjà envoyés.

  [24%]
Pourcentage du torrent déjà téléchargé. 

  0d 3:09
Estimation du temps restant (ce chiffre se fonde sur la vitesse courante en réception du téléchargement). Si la vitesse en réception reste la même, le téléchargement sera terminé dans 0 jours, 3 heures et 9 minutes.


  T
Indique que le torrent a été chargé à l'aide d'un fichier *.torrent stocké localement (le flag n'est pas présent lorsque le fichier torrent est chargé par le biais d'une URL)

  I
Indique que le torrent ignore les commandes (telles que stop_on_ratio, move_complete)

  R: 0.03
Indique le pourcentage de partage (//share ratio//) : c'est le nombre de données envoyées par rapport au nombre de données reçues. Ici, vous avez jusqu'ici envoyés 5.1 Mo et vous avez reçu 161.6 Mo, vous avez donc partagé 3 % du torrent.

===== rtorrent en daemon...=====

===... avec dtach ===

Voici un petit script qui permet de lancer rtorrent au démarrage de la distribution tout en se laissant la possibilité d'accéder à l'interface console.

Vous devez tout d'abord avoir [[apt://dtach|dtach]].

Ensuite dans [[:tutoriel:comment_editer_un_fichier|/etc/init.d/rtorrentd]] on écrit :
<code>#!/bin/sh -e
#
### BEGIN INIT INFO
# Provides: rtorrentd
# Required-Start: $network $syslog
# Required-Stop: $network
# Default-Start: 2 3 5
# Default-Stop: 0 1 6
# Description: Démarrer/arrêter rtorrent sous forme de daemon.
### END INIT INFO

NAME=rtorrentd
SCRIPTNAME=/etc/init.d/$NAME
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# path du fichier temporaire
TMP=/tmp/rtorrent.dtach
# user qui lance le torrent
USER=$nom
# chemin vers fichier conf
CONF=/home/$USER/.rtorrent.rc

start() {
        echo -n $"Starting $NAME: "
        su -l $USER -c "dtach -n $TMP rtorrent -n -o import=$CONF"
        chmod 666 /tmp/rtorrent.dtach
        echo "started"  
}

stop() {
        echo -n $"Stopping $NAME: "
        killall -r "rtorrent"
        echo "stopped"
}

restart() {

        if [ "$(ps aux | grep -e 'rtorrent' -c)" != 0  ]; then
        {
                stop
                sleep 5
        }
        fi
        start
}


case $1 in
        start)
               start
        ;;
        stop)
                stop
        ;;
        restart)
                restart
        ;;
        *)
                echo "Usage:  {start|stop|restart}" >&2
                exit 2
        ;;
esac

</code>
<note tip>N'oubliez pas de rensigner USER et CONF</note>

Pensez à rendre votre script exécutable :
<code>sudo chmod +x /etc/init.d/rtorrentd</code>

On termine avec la commande suivante pour indiquer que ce script doit s'exécuter au démarrage :
<code>sudo update-rc.d rtorrentd defaults 99</code>

Maintenant, à chaque démarrage du système, rtorrent se lancera automatiquement.

Pour pouvoir accéder à l'interface console il suffit d'utiliser la commande :
<code>dtach -a /tmp/rtorrent.dtach -r winch</code>

<note tip>Vous pouvez créer un [[:alias]] pour exécuter plus facilement la commande précédente.</note>

Pour détacher ensuite l'interface console il suffit de taper CTRL + \. (Sur mac avec clavier suisse, le backslash se fait avec Maj + Alt + 7, et ça ne fonctionne pas avec l'interface console. Un Ctrl + $ fonctionne correctement pour détacher l'interface)

===... avec screen ===
Installez [[apt://screen|screen]] qui est un outil plus répandu que dtach, il n'est pas aussi léger mais offre plus de fonctionnalités.
Ensuite dans [[:tutoriel:comment_editer_un_fichier|/etc/init.d/rtorrent-daemon.sh]] on écrit :
<code>#!/bin/sh -e
# Start/Stop rtorrent sous forme de daemon.

NAME=rtorrent-daemon.sh
SCRIPTNAME=/etc/init.d/$NAME
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

case $1 in
        start)
                echo "Starting rtorrent... "
                su -l USER -c "screen -fn -dmS rtd nice -19 rtorrent"
                echo "Terminated"
        ;;
        stop)
                if [ "$(ps aux | grep -e '.*rtorrent$' -c)" != 0  ]; then
                {
                        echo "Shutting down rtorrent... "
                        killall -r "^.*rtorrent$"
                        echo "Terminated"
                }
                else
                {
                        echo "rtorrent not yet started !"
                        echo "Terminated"
                }
                fi
        ;;
        restart)
                if [ "$(ps aux | grep -e '.*rtorrent$' -c)" != 0  ]; then
                {
                        echo "Shutting down rtorrent... "
                        killall -r "^.*rtorrent$"
                        echo "Starting rtorrent... "
                        su -l USER -c "screen -fn -dmS rtd nice -19 rtorrent"
                        echo "Terminated"
                }
                else
                {
                        echo "rtorrent not yet started !"
                        echo "Starting rtorrent... "
                        su -l USER -c "screen -fn -dmS rtd nice -19 rtorrent"
                        echo "Terminated"
                }
                fi
        ;;
        *)
                echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
                exit 2
        ;;
esac
</code>
<note tip>N'oubliez pas de changer "USER" par votre nom d'utilisateur.</note>
Pensez à rendre votre script exécutable:
<code>sudo chmod +x /etc/init.d/rtorrent-daemon.sh</code>

On termine avec la commande suivante pour indiquer que ce script doit s'exécuter au démarrage :
<code>sudo update-rc.d rtorrent-daemon.sh defaults 99</code>

Maintenant, à chaque démarrage du système, rtorrent se lancera automatiquement.

Pour pouvoir accéder à l'interface console on utilise la commande:
<code>stty stop undef; stty start undef; screen -r rtd</code>

<note tip>Vous pouvez vous créer un [[:tutoriel:script_shell|script]] ou un [[:alias]] pour exécuter plus facilement la commande précédente.</note>

Pour détacher ensuite l'interface console il suffit de taper Ctrl + a puis d .

===... avec crontab ===

Dans la crontab de l'utilisateur en lançant dtach.
L'utilisateur torrent lancera le dtach à chaque démarrage de la machine. C'est la solution la plus simple mais aussi la plus laide

<code> sudo crontab -e -u torrent</code>

On rajoute cette ligne 

# Start rtorrent in a detached session
@reboot TERM=xterm dtach -n ~/torrents/rtorrent rtorrent
===== Interfaces graphiques =====
Ce qui fait toute la puissance de rTorrent est son API : xmlrpc. Elle permet a un logiciel client de se connecter à rTorrent et à fournir une interface en se basant sur le moteur du logiciel. Cette flexibilité, obtenu à un coût très raisonnable (installation du paquet rtorrent), permet d'utiliser rTorrent de multiples façons.
Il peut être nécessaire d'installer pour ces clients mod_scgi :
[[apt://libapache2-mod-scgi|libapache2-mod-scgi]]

==== Interfaces "lourdes" ====
[[http://code.google.com/p/ntorrent/|nTorrent]] est une interface dite "lourde". 
Elle est programmée en java et a donc l'avantage d'être disponible sur beaucoup de plate-forme.

http://code.google.com/p/n2hell/

==== Interfaces "Web" ====
[[http://code.google.com/p/rutorrent/wiki/Main|ruTorrent]] est une interface web en php.
Elle est basée sur l'apparence (très agréable au demeurant) de uTorrent, le logiciel windows. Bien penser à lire la [[http://code.google.com/p/rutorrent/wiki/Main|mise en route]]
Voir aussi [[rutorrent]]

[[http://www.wtorrent-project.org/trac/|wTorrent]] est une interface web en php.


[[http://web-gmui.sourceforge.net/|web-gmui]] est une interface web en php.
Elle est non seulement compatible avec rTorrent, mais aussi avec MLdonkey, aMule, Transmission et giFT.

===== Voir aussi =====

  * [[http://libtorrent.rakshasa.no/|Site officiel de rTorrent]] (en)
  * [[http://libtorrent.rakshasa.no/wiki/UtilsList|Une liste de logiciels se greffant sur rTorrent]] (en)

----

//Contributeurs : [[utilisateurs:Yoann]], [[utilisateurs:Samaga]], Geek Spirit, Simtris.//